package com.edt.ichannel.api.dao;

import com.edt.ichannel.api.entiy.local.OrderCreditCK;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface OrderCreditCkDao {

    /**
     * 保存成卡信息
     * @param ordercreditck 成卡信息
     */
    void saveOrderCreditCk(OrderCreditCK ordercreditck);

    /**
     * 根据订单号查询成卡信息
     * @param orderCode 订单编码
     * @return 成卡信息
     */
    OrderCreditCK selectOrderCreditCkByOrderCode(String orderCode);

    /**
     * 查询需要发放佣金成卡信息
     * @return 需要发放成卡信息集合
     */
    List<OrderCreditCK> selectNeedPutOut();

    /**
     * 将成卡信息移动到ordercredit 用于计算发展奖和统计
     */
    void moveOrderCreditCkToOrderCredit();

    /**
     * 添加或修改成卡信息
     * @param orderCreditCK 成卡信息
     */
    void saveOrUpdateOrderCreditCk(OrderCreditCK orderCreditCK);

    /**
     * 根据订单号移动成卡数据
     * @param orderCode 订单号
     */
    void moveOrderCreditCkToOrderCreditByOrderCode(@Param("orderCode") String orderCode);

    /**
     * 查询需要推送给统一销售平台成卡信息
     * @return 需要推送的成卡
     */
    List<OrderCreditCK> selectOrderChannelCNeedPush(@Param("monthStr") String monthStr);

    /**
     * 推送结束修改状态
     * @param id 成卡表id
     */
    void updateNeedPushuToOver(@Param("id") String id);

    /**
     * 按月发放流程结束
     * @param id 成卡表id
     */
    void overFlowMonthCommission(@Param("id") String id);

    /**
     * 给成卡添加佣金
     * @param id 成卡id
     * @param commissionMoney 添加佣金金额
     */
    void addCommissionMoney(@Param("id") String id, @Param("commissionMoney") Double commissionMoney);

    void appendRemark(@Param("id") String id, @Param("s") String s);
}
